#!/bin/sh

logger="GlogY.sh"
mover="MoverY.sh"
interprete="Interprete.sh"
bloqueador="bloquear_pid.sh"
desbloqueador="desbloquear_pid.sh"

aceptar ()
{
	$mover "$1" "$ACEPDIR"
	$logger "$nice_name" "I" "Aceptado '$1'"
	acepto=0
}

rechazar ()
{
	$mover "$1" "$RECHDIR"
	$logger "$nice_name" "E" "Rechazado '$1'; $2"
}

DetectaY_main ()
{
	local mae_ps="$MAEDIR/P-S.mae"
	local acepto=1

	if [ '' = "$(ls -A $ARRIDIR)" ] ; then
		return 0
	fi
	
	for arch in $ARRIDIR/* ; do
		if ! file "$arch" | grep "text" ; then
			rechazar "$arch" "No es un archivo de texto"
		elif basename "$arch" | egrep "^[[:alpha:]]-[[:digit:]]*-[[:digit:]]{4}-[[:digit:]]{2}$" ; then
			local pais=$(basename "$arch" | cut -d '-' -f 1)
			local sistema=$(basename "$arch" | cut -d '-' -f 2)
			local year=$(basename "$arch" | cut -d '-' -f 3)
			local mes=$(basename "$arch" | cut -d '-' -f 4)
			local curr_year=$(date +%Y)
			local curr_mes=$(date +%m)
			
			if [ $mes -lt 1 -o $mes -gt 12 ] ; then
				rechazar "$arch" "$mes no es un mes valido"
			elif [ $year -le 2000 ] ; then
				rechazar "$arch" "No se aceptan archivos fechados antes del año 2001"
			elif [ $year -gt $curr_year -o \( $year -eq $curr_year -a $mes -gt $curr_mes \) ] ; then
				rechazar "$arch" "No se aceptan archivos fechados en periodos futuros"
			elif ! grep "^$pais-.*" "$mae_ps" ; then
				rechazar "$arch" "No se reconoce el pais '$pais'"
			elif ! grep "^$pais-[^-]*-$sistema-.*" "$mae_ps" ; then
				rechazar "$arch" "No se reconoce el sistema '$sistema' en el pais '$pais'"
			else
				aceptar "$arch"
			fi
		else
			rechazar "$arch" "Su nombre no esta en el formato correcto"
		fi
	done
	
	if [ 0 -eq $acepto ] ; then
		$interprete
	fi
	
	return 0
}

DetectaYd ()
{
	local nice_name="$(basename $0)"
	
	if ! $bloqueador "$nice_name" ; then
		exit 1
	fi
	trap "$desbloqueador $nice_name" EXIT

	trap '' HUP QUIT

	# cerrar stdin, stdout, stderr
	exec 0>&-
	exec 1>/dev/null
	exec 2>/dev/null

	local nloop=1
	while [ $nloop -le $CANLOOP ] ; do
		$logger "$nice_name" "I" "Ciclo $nloop de $CANLOOP"

		DetectaY_main

		nloop=$(( $nloop + 1 ))
		if [ $nloop -le $CANLOOP ] ; then
			sleep $TESPERA
		fi
	done
}

if [ $# -ne 0 ] ; then
	echo "WARNING: $0 no toma parametros por consola."
	echo "         Verifique su invocacion."
fi

# verifico el entorno
if [ "$INICIO_OK" != "grupo06" ] ; then
	echo "ERROR: El ambiente no esta correctamente inicializado."
	echo "       Por favor ejecute InicioY.sh"
	exit 2
else
	(DetectaYd &) &
fi

